/**
 * dynamicMenuRoutes - 动态生成路由
 * @author lsc
 * @date 2024/3/31 17:14
 */
export function dynamicMenuRoutes(menuList: any = [], routes: any = []) {
    // 用于保存普通路由数据
    let temp: any = []
    // 用于保存存在子路由的路由数据
    let route: any = []
    // 遍历数据
    for (let i = 0; i < menuList.length; i++) {
        // 存在子路由，则递归遍历，并返回数据作为 children 保存
        if (menuList[i].children && menuList[i].children.length > 0) {
            // 获取路由的基本格式
            route = getRoute(menuList[i])
            // 递归处理子路由数据，并返回，将其作为路由的 children 保存
            route.children = dynamicMenuRoutes(menuList[i].children)
            // 保存存在子路由的路由
            routes.push(route)
        } else {
            // 保存普通路由
            temp.push(getRoute(menuList[i]))
        }
    }
    // 返回路由结果
    return routes.concat(temp)
}

/**
 * getRoute - 获取路由
 * @author lsc
 * @date 2024/3/31 17:14
 */
function getRoute(item: any) {
    const modules = import.meta.glob('../views/**/*.vue')
    const filePath = modules[`../views${item.component}.vue`]
    // 路由基本格式
    // 返回 route
    return {
        // 路由的路径
        path: item.router,
        // 路由名
        name: item.name,
        // 路由所在组件
        // component: (resolve) => require([`@/view${item.component}.vue`], resolve),
        component: filePath,
        meta: {
            requireAuth: true
        },
        // 路由的子路由
        children: []
    }
}
